//////////////////////////////////////////ok
#include"stdafx.h"
#include "bochs.h"


void IA32_CPU::task_switch(ia32_selector_t *tss_selector,ia32_descriptor_t *tss_descriptor, unsigned source,Bit32u dword1, Bit32u dword2)
{
	exception(IA32_GP_EXCEPTION, 0, 0);
	//MessageBox(NULL,"TASK-SWITCH ERROR","ERROR",MB_OK);
}

void IA32_CPU::get_SS_ESP_from_TSS(unsigned pl, Bit16u *ss, Bit32u *esp)
{
	exception(IA32_TS_EXCEPTION,  tr.selector.value & 0xfffc, 0);
//  if ( tr.cache.type==IA32_SYS_SEGMENT_AVAIL_386_TSS) 
//  {
//    Bit32u TSSstackaddr = 8*pl + 4;
//    if ( (TSSstackaddr+7) >  tr.cache.u.tss386.limit_scaled )
//      exception(IA32_TS_EXCEPTION,  tr.selector.value & 0xfffc, 0);
//
//    m_vm32->access_address_n(this, tr.cache.u.tss386.base + TSSstackaddr+4, 2, 0, IA32_READ, ss);
//    m_vm32->access_address_n(this, tr.cache.u.tss386.base + TSSstackaddr,   4, 0, IA32_READ, esp);
//#ifdef IA32_BIG_ENDIAN
//    IA32_ReadHostWordFromLittleEndian(ss, ss);
//    IA32_ReadHostDWordFromLittleEndian(esp, esp);
//#endif
//  }
//  else if ( tr.cache.type==IA32_SYS_SEGMENT_AVAIL_286_TSS) 
//  {
//    // 16-bit TSS
//    Bit16u temp16;
//    Bit32u TSSstackaddr = 4*pl + 2;
//    if ( (TSSstackaddr+4) >  tr.cache.u.tss286.limit )
//      exception(IA32_TS_EXCEPTION,  tr.selector.value & 0xfffc, 0);
//
//    m_vm32->access_address_n(this, tr.cache.u.tss286.base +  TSSstackaddr+2, 2, 0, IA32_READ, ss);
//    m_vm32->access_address_n(this, tr.cache.u.tss286.base +  TSSstackaddr,   2, 0, IA32_READ, &temp16);
//#ifdef IA32_BIG_ENDIAN
//    IA32_ReadHostWordFromLittleEndian(ss, ss);
//    IA32_ReadHostWordFromLittleEndian(&temp16, &temp16);
//#endif
//    *esp = temp16; // truncate
//  }
//  else 
//  {
//  }

}
